package dados;

import dados.geral.*;
import dados.interfaces.IContratoDAO;

import java.util.Calendar;
import java.util.List;

import javax.persistence.TypedQuery;

import basicas.Cliente;
import basicas.Contrato;
import basicas.Veiculo;

public class ContratoDAO extends DAOGenerico<Contrato> implements IContratoDAO{

	@Override
	public List<Contrato> consultarPeloCliente(Cliente c) {
		TypedQuery<Contrato> query = entityManager.createQuery("from Contrato c where c.cliente = :cliente", Contrato.class);
		query.setParameter("cliente", c);
		return query.getResultList();
	}

	@Override
	public List<Contrato> consultarPeloValorFinal(double valorFinal) {
		TypedQuery<Contrato> query = entityManager.createQuery("from Contrato c where c.valorFinal = :valorFinal", Contrato.class);
		query.setParameter("valorFinal", valorFinal);
		return query.getResultList();
	}

	@Override
	public List<Contrato> consultarPelaDataInicial(Calendar dataAbertura) {
		TypedQuery<Contrato> query = entityManager.createQuery("from Contrato c where c.dataAbertura = :dataAbertura", Contrato.class);
		query.setParameter("dataAbertura", dataAbertura);
		return query.getResultList();
	}

	@Override
	public List<Contrato> consultarPelaDataEntrega(Calendar dataFechamento) {
		TypedQuery<Contrato> query = entityManager.createQuery("from Contrato c where c.dataFechamento = :dataFechamento", Contrato.class);
		query.setParameter("dataFechamento", dataFechamento);
		return query.getResultList();
	}

	@Override
	public List<Contrato> consultarPeloVeiculo(Veiculo veiculo) {
		TypedQuery<Contrato> query = entityManager.createQuery("from Contrato c where c.veiculo = :veiculo", Contrato.class);
		query.setParameter("veiculo", veiculo);
		return query.getResultList();
	}
	
	@Override
	public List<Contrato> consultarTodosAtivos() {
		TypedQuery<Contrato> query = entityManager.createQuery("from Contrato c where c.situacao = 'ATIVO'", Contrato.class);
		return query.getResultList();
	}
	

}
